package com.hotdog.config;


import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.oauth2.provider.token.TokenStore;
import org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter;
import org.springframework.security.oauth2.provider.token.store.JwtTokenStore;

/**
 * 创建JWT令牌配置类 基于这个类实现对令牌的解析与创建
 * header(头部信息 令牌类型)
 * payload (数据信息 用户信息 权限信息)
 * 3.singnature 签名信息 对header和 payload部分信息进行加密
 *
 * @author dell
 */
@Configuration
public class TokenConfig {
    /**
     * 解密口令
     * 当客户端登录时 携带此信息 认证服务器就可以签发令牌
     */
    private String SIGNING_KEY = "auth";

    /**
     * 构建令牌生成器对象
     *
     * @return
     */
    @Bean
    public TokenStore tokenStore() {
        return new JwtTokenStore(jwtAccessTokenConverter());
    }

    /**
     * Jwt转换器,将任何数据转换为jwt字符串
     *
     * @return
     */
    @Bean
    public JwtAccessTokenConverter jwtAccessTokenConverter() {
        JwtAccessTokenConverter converter = new JwtAccessTokenConverter();
        //设置加密/解密口令
        converter.setSigningKey(SIGNING_KEY);
        return converter;
    }

}

